package com.electron.power.model.mod;

import java.math.BigDecimal;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Data
@ApiModel("电力数据")
@NoArgsConstructor
@Slf4j
public class ModMapData {

	public static final BigDecimal valtageUnit = new BigDecimal("0.0001");

	public static final BigDecimal currentUnit = new BigDecimal("0.0001");

	public static final BigDecimal powerUnit = new BigDecimal("0.0001");

	public static final BigDecimal elctricityOfquantityUnit = new BigDecimal("0.0001");

	public static final BigDecimal powerFactorUnit = new BigDecimal("0.001");

	public static final BigDecimal emissionsOfCO2Unit = new BigDecimal("0.0001");

	public static final BigDecimal temperatureUnit = new BigDecimal("0.1");
//
	public static final BigDecimal rateUnit = new BigDecimal("0.01");

	@ApiModelProperty(value = "电压32 位无符号数，单位 0.0001V", example = "2990296414")
	private double voltage;

	@ApiModelProperty(value = "电流 32 位无符号数，单位 0.0001A", example = "5070353")
	private double current;

	@ApiModelProperty(value = "有功功率 32 位无符号数，单位 0.0001W", example = "46562564")
	private double power;

	@ApiModelProperty(value = "有功总电量 32 位无符号数，单位 0.0001KWh", example = "542456")
	private double elctricityOfquantity;

	@ApiModelProperty(value = "功率因数 32 位无符号数，单位 0.001", example = "75434")
	private double powerFactor;

	@ApiModelProperty(value = "二氧化碳排量 32 位无符号数，单位 0.0001Kg", example = "78789")
	private double emissionsOfCO2;

	@ApiModelProperty(value = "温度 32 位无符号数，单位 0.1℃", example = "545")
	private double temperature;

	@ApiModelProperty(value = "频率 32 位无符号数，单位 0.01Hz", example = "5894")
	private double rate;

	public static ModMapData wash(ModData modData) {
		log.info("进入wash方法!");
		ModMapData modMapData = new ModMapData();
		modMapData.setVoltage(new BigDecimal(modData.getVoltage()).multiply(ModMapData.valtageUnit).doubleValue());
		modMapData.setCurrent(new BigDecimal(modData.getCurrent()).multiply(ModMapData.currentUnit).doubleValue());
		modMapData.setPower(new BigDecimal(modData.getPower()).multiply(ModMapData.powerUnit).doubleValue());
		modMapData.setElctricityOfquantity(new BigDecimal(modData.getElctricityOfquantity())
				.multiply(ModMapData.elctricityOfquantityUnit).doubleValue());
		modMapData.setPowerFactor(
				new BigDecimal(modData.getPowerFactor()).multiply(ModMapData.powerFactorUnit).doubleValue());
		modMapData.setEmissionsOfCO2(
				new BigDecimal(modData.getEmissionsOfCO2()).multiply(ModMapData.emissionsOfCO2Unit).doubleValue());
		modMapData.setTemperature(
				new BigDecimal(modData.getTemperature()).multiply(ModMapData.temperatureUnit).doubleValue());
		modMapData.setRate(new BigDecimal(modData.getRate()).multiply(ModMapData.rateUnit).doubleValue());
		return modMapData;
	}
	
	public static ModMapData wash(Integer[] modData) {
		int posintion = 0;
		log.info("进入wash方法!");
		ModMapData modMapData = new ModMapData();
		modMapData.setVoltage(new BigDecimal(modData[posintion++]).multiply(ModMapData.valtageUnit).doubleValue());
		modMapData.setCurrent(new BigDecimal(modData[posintion++]).multiply(ModMapData.currentUnit).doubleValue());
		modMapData.setPower(new BigDecimal(modData[posintion++]).multiply(ModMapData.powerUnit).doubleValue());
		modMapData.setElctricityOfquantity(new BigDecimal(modData[posintion++])
				.multiply(ModMapData.elctricityOfquantityUnit).doubleValue());
		modMapData.setPowerFactor(
				new BigDecimal(modData[posintion++]).multiply(ModMapData.powerFactorUnit).doubleValue());
		modMapData.setEmissionsOfCO2(
				new BigDecimal(modData[posintion++]).multiply(ModMapData.emissionsOfCO2Unit).doubleValue());
		modMapData.setTemperature(
				new BigDecimal(modData[posintion++]).multiply(ModMapData.temperatureUnit).doubleValue());
		modMapData.setRate(new BigDecimal(modData[posintion++]).multiply(ModMapData.rateUnit).doubleValue());
		return modMapData;
	}

}
